МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ТЕХНІЧНИЙ КОЛЕДЖ НАЦІОНАЛЬНОГО УНІВЕРСИТЕТУ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
КАФЕДРА ІНФОРМАЦІЙНИХ
ТЕХНОЛОГІЙ ТА
КОМП’ЮТЕРНОЇ ТЕХНІКИ
Лабораторна робота №5
з Людино-машинний інтерфейс
на тему:
“ Конструювання програм з графічним інтерфейсом GDI+ ”
м. Львів – 2011
Мета: Засвоїти методику та виробити практичні навички у проектуванні та створенні програм з графічним інтерфейсом GDI+.
Теоретичні відомості.
Нова концепція графічного інтерфейсу GDI+( Graphics Device Interface) дещо відрізняється від концепці «класичного» графічного інтерфейсу GDI. Для того щоб програма міг що-небудь намалювати у вікні, вона повинна, перш за все, отримати або створити для цього об'єкт класу Graphics. Користуючись властивостями і методами цього об'єкта, програма може малювати у вікні різні фігури або текстові рядки.
Ідентифікатор вікна Handle і об'єкт Graphics.
Перш ніж намалювати у вікні нашої програми, потрібно мати для цього вікна об'єкт класу Graphics. Кожне вікно має свій ідентифікатор (handle). Знаючи ідентифікатор вікна, можна легко отримати пов'язаний з цим вікном контекст відображення. Програми Microsoft. NET Framework можуть отримати ідентифікатор форми або будь-якого іншого елемента керування за допомогою властивості Handle. Програма отримує ідентифікатор вікна форми Form1 за допомогою властивості this.Handle. Знаючи ідентифікатор вікна, за допомогою методу Graphics.FromHwnd неважко отримати потрібний об'єкт класу Graphics:
Graphics g = Graphics.FromHwnd (this.Handle);
Програміст, що створює додаток GDI +, має потребу в інструментах для малювання. Створюється кисть як об'єкт класу SolidBrush:
SolidBrush redBrush = new SolidBrush (Color. Red);
За допомогою цієї кисті можна малювати замкнуті геометричні фігури, зафарбовані заданим кольором. Через єдиний параметр передається конструктор класу SolidBrush колір кисті Color.Red. Таким чином, малюється пензлем червоного кольору.
У класі Graphics є безліч різних методів, призначених для малювання самих різних геометричних фігур, таких як лінії, прямокутники, овали та кола, багатокутники, криві Безьє і т.д. Але в цьому класі немає метода, за допомогою якого можна було б намалювати одну єдину точку. Замість крапки можна намалювати зафарбований квадрат з шириною боку, рівним 1 пікселу. Це виконується за допомогою методу FillRectangle:
g. FillRectangle (redBrush, e. X, e. Y, 1, 1);
Метод FillRectangle викликається для об'єкта g класу Graphics. В якості першого параметра методу FillRectangle передається кисть redBrush, яку потрібно використовуваті для малювання. Кисть потрібна і для інших методів класу Graphics, призначення для малювання геометричних фігур. Другий и Третій параметр методу FillRectangle задають координати, в якіх буде намальованій квадрат. Початок системи координат при цьому знаходиться в лівому верхньому кутку вікна, для якого був отриманий об'єкт Graphics.
Вісь X в цій системі координат, прийнятій за замовчуванням, спрямована зліва направо, а вісь Y - зверху вниз.
Обробникові Form 1_ Paint передаються два параметри.
Через перший параметр передається посилання на об'єкт. Що ж стосується другого параметра, то через нього передається посилання на об'єкт класу PaintEventArgs. Цей об'єкт має дві властивості, доступних тільки для читання - Graphics і ClipRectangle.
Клас Graphics - є контекст відображення, необхідний для малювання тексту і геометричних фігур. Обробник події Paint отримує контекст відображення через свої параметри, тому програмісту не потрібно визначати його спеціальним чином.
Через властивість ClipRectangle передаються межі області, яку повинен перемалювати обробник події Paint.
Обробник події Paint може ігнорувати властивість ClipRectangle, перемальовуючи вміст вікна повністю. Однак процес перемальовування вмісту вікна можна помітно прискорити, якщо перемальовувати не все вікно, а тільки область, описану властивістю ClipRectangle. Прискорення буде особливо помітним, якщо у вікні намальовано багато тексту і геоме...